// 仓库 redux
// 1. 什么是 redux
// 是 js 的状态(数据)容器， 提供可预测的状态容器变化

// 2. 为什么要学习redux？
// 方便管理数据

// 3. redux 三大原则
// 单一数据源
// State 是只读的
// 使用纯函数来执行修改state

// 纯函数:
// 1. 传入什么参数就是返回什么参数类型, 一定相同格式类型
// 2. 没有特殊情况、没有副作用，没有 API 请求、没有变量修改，单纯执行计算。
// 什么是 action ？
// 1.Action 是把数据从应用传到 store 的有效载荷。
// 2.它是 store 数据的唯一来源。
// 3.一般来说你会通过 store.dispatch() 将 action 传到 store。

// 4. 怎么用？
import { createStore } from "redux";

const initState = {
  count: 1,
};

const reduce = (state = initState, action) => {
  if (action.type === "changeCount") {
    return {
      count: state.count + action.payload,
    };
  }
  return state;
};

// 创建仓库
const store = createStore(reduce);

export default store

// // 侦听器  当dispatch action 该函数执行
// store.subscribe(() => {
//   console.log("数据改变了");
// });

// // 获取仓库数据
// const state1 = store.getState();
// console.log(state1);
// // 唯一修改数据方法
// // store.dispatch(action)
// store.dispatch({ type: "changeCount", payload: 1 });
// store.dispatch({ type: "changeCount", payload: 1 });

// // 获取仓库数据
// const state2 = store.getState();
// console.log(state2);

// store.dispatch({ type: "changeCount", payload: -1 });

// // 获取仓库数据
// const state3 = store.getState();
// console.log(state3);

// store.dispatch({ type: "changeCount", payload: 10 });

// // 获取仓库数据
// const state4 = store.getState();
// console.log(state4);

